home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIP Haziran 2001.iso / prog / haziran / 19 / setup.exe / data.z / p9030_lib.h < prev    next >
C/C++ Source or Header  |  2001-04-11  |  6KB  |  143 lines

  1. #ifndef _P9030_LIB_H_
  2. #define _P9030_LIB_H_
  3.  
  4. #ifdef __KERNEL__
  5.     #include "../../../include/kdstdlib.h"
  6. #endif //__KERNEL__
  7. #include "../../../include/windrvr.h"
  8. #include "../../../samples/shared/pci_regs.h"
  9. #include "../../../samples/shared/bits.h"
  10.  
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14.  
  15. // PLX register definitions 
  16. enum {
  17.     P9030_LAS0RR      = 0x00,
  18.     P9030_LAS1RR      = 0x04,
  19.     P9030_LAS2RR      = 0x08,
  20.     P9030_LAS3RR      = 0x0c,
  21.     P9030_EROMRR      = 0x10,
  22.     P9030_LAS0BA      = 0x14,
  23.     P9030_LAS1BA      = 0x18,
  24.     P9030_LAS2BA      = 0x1c,
  25.     P9030_LAS3BA      = 0x20,
  26.     P9030_EROMBA      = 0x24,
  27.     P9030_LAS0BRD     = 0x28,
  28.     P9030_LAS1BRD     = 0x2c,
  29.     P9030_LAS2BRD     = 0x30,
  30.     P9030_LAS3BRD     = 0x34,
  31.     P9030_EROMBRD     = 0x38,
  32.     P9030_CS0BASE     = 0x3c,
  33.     P9030_CS1BASE     = 0x40,
  34.     P9030_CS2BASE     = 0x44,
  35.     P9030_CS3BASE     = 0x48,
  36.     P9030_INTCSR      = 0x4c,
  37.     P9030_PROT_AREA   = 0x4e,
  38.     P9030_CNTRL       = 0x50,
  39.     P9030_GPIOC       = 0x54,
  40.     P9030_PMDATASEL   = 0x70,
  41.     P9030_PMDATASCALE = 0x74,
  42. };
  43.  
  44. // PLX specific PCI configuration registers
  45. enum {
  46.     P9030_VPD_ADDR   = 0x4E,
  47.     P9030_VPD_DATA   = 0x50,
  48. };
  49.  
  50. typedef enum
  51. {
  52.     P9030_MODE_BYTE   = 0,
  53.     P9030_MODE_WORD   = 1,
  54.     P9030_MODE_DWORD  = 2
  55. } P9030_MODE;
  56.  
  57. typedef enum
  58. {
  59.     P9030_ADDR_REG     = AD_PCI_BAR0,
  60.     P9030_ADDR_REG_IO  = AD_PCI_BAR1,
  61.     P9030_ADDR_SPACE0  = AD_PCI_BAR2,
  62.     P9030_ADDR_SPACE1  = AD_PCI_BAR3,
  63.     P9030_ADDR_SPACE2  = AD_PCI_BAR4,
  64.     P9030_ADDR_SPACE3  = AD_PCI_BAR5,
  65.     P9030_ADDR_EPROM   = AD_PCI_BAR_EPROM,
  66. } P9030_ADDR;
  67.  
  68.  
  69. enum { P9030_RANGE_REG = 0x00000080 };
  70.  
  71. typedef struct P9030_STRUCT *P9030_HANDLE;
  72. typedef P9030_HANDLE P9030HANDLE;
  73.  
  74. typedef struct
  75. {
  76.     DWORD dwCounter;   // number of interrupts received
  77.     DWORD dwLost;      // number of interrupts not yet dealt with
  78.     BOOL fStopped;     // was interrupt disabled during wait
  79.     DWORD dwStatusReg; // value of status register when interrupt occured
  80. } P9030_INT_RESULT;
  81.  
  82. typedef void (WINAPI *P9030_INT_HANDLER)( P9030_HANDLE hPlx, P9030_INT_RESULT *intResult);
  83.  
  84. // options for PLX_Open
  85. enum { P9030_OPEN_USE_INT  =   0x1 };
  86.  
  87. DWORD P9030_CountCards (DWORD dwVendorID, DWORD dwDeviceID);
  88. BOOL P9030_Open (P9030_HANDLE *phPlx, DWORD dwVendorID, DWORD dwDeviceID, DWORD nCardNum, DWORD options);
  89. void P9030_Close (P9030_HANDLE hPlx);
  90. BOOL P9030_IsAddrSpaceActive(P9030_HANDLE hPlx, P9030_ADDR addrSpace);
  91. void P9030_GetPciSlot(P9030_HANDLE hPlx, WD_PCI_SLOT *pPciSlot);
  92.  
  93. void P9030_ReadWriteBlock (P9030_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, 
  94.                     DWORD dwBytes, BOOL fIsRead, P9030_ADDR addrSpace, P9030_MODE mode);
  95. void P9030_ReadBlock (P9030_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, 
  96.                     DWORD dwBytes, P9030_ADDR addrSpace, P9030_MODE mode);
  97. void P9030_WriteBlock (P9030_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, 
  98.                     DWORD dwBytes, P9030_ADDR addrSpace, P9030_MODE mode);
  99. BYTE P9030_ReadByte (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr);
  100. void P9030_WriteByte (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr, BYTE data);
  101. WORD P9030_ReadWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr);
  102. void P9030_WriteWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr, WORD data);
  103. DWORD P9030_ReadDWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr);
  104. void P9030_WriteDWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr, DWORD data);
  105.  
  106. void P9030_ReadWriteSpaceBlock (P9030_HANDLE hPlx, DWORD dwOffset, PVOID buf, 
  107.                     DWORD dwBytes, BOOL fIsRead, P9030_ADDR addrSpace, P9030_MODE mode);
  108. void P9030_ReadSpaceBlock (P9030_HANDLE hPlx, DWORD dwOffset, PVOID buf, 
  109.                     DWORD dwBytes, P9030_ADDR addrSpace, P9030_MODE mode);
  110. void P9030_WriteSpaceBlock (P9030_HANDLE hPlx, DWORD dwOffset, PVOID buf, 
  111.                     DWORD dwBytes, P9030_ADDR addrSpace, P9030_MODE mode);
  112. BYTE P9030_ReadSpaceByte (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset);
  113. void P9030_WriteSpaceByte (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset, BYTE data);
  114. WORD P9030_ReadSpaceWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset);
  115. void P9030_WriteSpaceWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset, WORD data);
  116. DWORD P9030_ReadSpaceDWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset);
  117. void P9030_WriteSpaceDWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset, DWORD data);
  118.  
  119. BOOL P9030_IntIsEnabled (P9030_HANDLE hPlx);
  120. BOOL P9030_IntEnable (P9030_HANDLE hPlx, P9030_INT_HANDLER funcIntHandler);
  121. void P9030_IntDisable (P9030_HANDLE hPlx);
  122.  
  123. DWORD P9030_ReadReg (P9030_HANDLE hPlx, DWORD dwReg);
  124. void P9030_WriteReg (P9030_HANDLE hPlx, DWORD dwReg, DWORD dwData);
  125.  
  126. BOOL P9030_EEPROMReadWord(P9030_HANDLE hPlx, DWORD dwOffset, PWORD pwData);
  127. BOOL P9030_EEPROMWriteWord(P9030_HANDLE hPlx, DWORD dwOffset, WORD wData);
  128. BOOL P9030_EEPROMReadDWord(P9030_HANDLE hPlx, DWORD dwOffset, PDWORD pdwData);
  129. BOOL P9030_EEPROMWriteDWord(P9030_HANDLE hPlx, DWORD dwOffset, DWORD dwData);
  130. BOOL P9030_EEPROMValid(P9030_HANDLE hPlx);
  131.  
  132. DWORD P9030_ReadPCIReg(P9030_HANDLE hPlx, DWORD dwReg);
  133. void P9030_WritePCIReg(P9030_HANDLE hPlx, DWORD dwReg, DWORD dwData);
  134.  
  135. // this string is set to an error message, if one occurs
  136. extern CHAR P9030_ErrorString[];
  137.  
  138. #ifdef __cplusplus
  139. }
  140. #endif
  141.  
  142. #endif
  143.